1. Field of the Invention
The subject invention relates to printed circuit cards for add in I/O functions for computer systems. More particularly, the invention relates to accessing memory on the printed circuit cards at any time through use of an interrupt.
2. Description of the Prior Art
The PCMCIA (Personal Computer Memory Card International Association) standard was developed for the purpose of providing user installed memory and I/O functions for small form factor digital computer systems. The standard specifies a card containing a printed circuit board. This product is usually referred to as a PC card. There are three PC card formats: Types I, II and III. The standard specifies the interface between the PC card and the host. The hardware portion of the interface consists of a 68 position socket on one end of the card. The 68 position socket mates with a 68 position plug mounted on a header which is in turn mounted to a mother board or daughter board which is located inside the host. In addition to the hardware interface, the PCMCIA standard also specifies the signal timing protocol. In the PC card, the protocol was originally implemented by wiring up over 1000 logic gates. This however was expensive.
The original Type I PC cards were intended to provide additional memory. No interaction with external devices was contemplated. Later, a PCMCIA specification for a type II card was developed which provided for I/O functionality such as modems, facsimile, network interfaces, multi-media interface, sound cards, etc. In order to handle I/O functions, a second connector is located on the end of the card opposite the 68 position socket.
Because type II cards with several different types of functionality may be inserted into the type II PC card slot on a host computer, the PCMCIA standard establishes a procedure for the host to identify and adapt to the different types of cards. To start with the PCMCIA standard breaks the microcontroller memory into three separate spaces: attribute memory space, common memory space and I/O memory space. Each memory space uses the same set of 25 address lines but different sets of control signals. Thus, there is an attribute memory address 1, a common memory address 1, an I/O address 1, etc. Each is reached with the same signals on the address bus, but different signals on the control bus. In the host, certain segments of host memory are mapped to the three memory spaces on the card. The PCMCIA standard further specifies that any access to any memory must be completed within a 12 microsecond window. So for example, reading of one byte of information from the card must be completed in 12 microseconds or less.
The information that specifies the card is stored in an area called a configuration information structure ("CIS") which starts at address 0 in attribute memory space. This information includes everything that the host needs to know about the card to allocate system resources such as com ports, memory, IRQ levels, etc. and otherwise configure various registers both in the host and on the card to work with the card. Among the additional resources that the host may allocate based on the CIS information are common memory, I/O space or both. This process in known as configuring the system for the PCMCIA card. Until the host performs the configuration function, the card is useless. Indeed, the PCMCIA standard does not allow the host to access any area of a PC card other than the CIS information until the configuration process is complete. Thus, there are two states in which a PC card may be: configured and un-configured.
To reduce the cost of the logic required to perform the PCMCIA protocol, manufacturers substituted a microcontroller, its associated software and a small amount of additional hard wired logic, often in the form of a programmable logic device ("PLD"), to emulate the PCMCIA interface protocol. With this approach, most of the functionality of the old protocol logic gates was moved to the microcontroller. The microcontroller would toggle signals at the appropriate times to emulate the PCMCIA protocol timing specification.
When a card is un-configured, the microcontroller is mainly idling. In this condition, it is easy to make a memory access within the 12 micro second time specified by the PCMCIA standard. However, once the card has been configured and is handling I/O requests, the microcontroller is very busy performing its protocol emulation duties. Under these conditions, standard software access techniques such as polling are not able to access PC card memory in the prescribed 12 microseconds.
Because of this, prior art systems that use a microcontroller to emulate the interface protocol signal timing do not allow access to the CIS after the card has been configured. However, there are good reasons for having the CIS information available to the host at all times.
Software that is executing on the host sometimes requires this information at later times. This is particularly true when the host is executing several programs simultaneously.